var test = (function (x) {
  // x:1
  this.x = x; // this指向的是谁  test  window  global (node)
  // global.x
  // console.log(this);
  return function (y) {
    console.log(this);// 函数的拥有者 es5   ()=>{this指的外层函数的拥有者}
    return this.x + y; // y:3
  } //函数
}(function (x, y) {
  return x;
}(1, 2)));

// (function () {
//
// })();

// console.log(test(3));


let obj = {
  fn1() {
    console.log(this);
  },
  fn3() { // 闭包
    return function () {// 箭头函数没有this
      console.log(this);// 指向外层函数的拥有者  拥有者 obj
    };
  }
};

obj.fn1();//obj
let fn4 = obj.fn3(obj);//
// obj.fn2();//
fn4.bind(obj)(); //window



